﻿//Include("Mz");

/**
 * @fileoverview 轮循数组的每一项，作为某个程序的参数
 * @author meizz
 * @version 20091026
 * @name Mz.each
 *
 * @param {Object} obj Array/JSON对象
 * @param {Function} fn 处理程序
 * @param {Object} context [可选]fn处理函数的宿主
 * @return {Object} 被轮循的那个数组/JSON对象
 */
Mz.each = function(obj, fn, context) {
    if (obj && typeof fn == "function") {
        for (var key in obj) { /* array and json */
            //被循环执行的函数，默认会传入三个参数(obj[i], i, obj)
            var result = fn.call(context||null, obj[key], key, obj);

            //被循环执行的函数的返回值若为"continue"和"break"时可以影响each方法的流程
            if (result == "continue") {continue;}
            else if (result == "break") {break;}
        }
    }
    return obj;
};